package com.itxiuyixiu.entity.enums;

/**
 * @author 黄磊
 * @date 2020/1/19
 */
public enum ActivityState {
    /**
     * 审核中
     */
    AUDITING(0),

    /**
     * 活动审核失败
     */
    FAILED(1),

    /**
     * 活动审核—老师
     */
    IN_PROGRESS_TEACHER(2),

    /**
     * 通过审核
     */
    PASSED(3),

    /**
     * 活动尚未开始
     */
    NOT_STARTED(4),

    /**
     * 活动进行中
     */
    PROCESSING(5),

    /**
     * 活动已完结
     */
    FINISHED(6),

    /**
     * 活动取消
     */
    CANCELED(7);

    private final Integer value;

    ActivityState(Integer value) {
        this.value = value;
    }

    /**
     * 比较两个状态的大小
     *
     * @param state 大小
     * @return 假如 本状态 小于 state状态 的话就会返回一个负数，大于的就会返回一个整数，相等为0
     */
    public Integer compare(ActivityState state) {
        return this.value - state.getValue();
    }

    /**
     * 比较两个状态的大小
     *
     * @param state1 状态1
     * @param state2 状态2
     * @return 假如 本状态 小于 state状态 的话就会返回一个负数，大于的就会返回一个整数，相等为0
     */
    public static Integer compare(ActivityState state1, ActivityState state2) {
        return state1.getValue() - state2.getValue();
    }

    /**
     * 返回当前value下一个值的对象
     *
     * @return 返回当前value下一个值的AccountState对象
     */
    public ActivityState getNext() {
        int value = this.value + 1;
        ActivityState[] activityStates = ActivityState.values();
        for (ActivityState state : activityStates) {
            if (state.getValue() == value) {
                return state;
            }
        }
        if (value > activityStates[activityStates.length - 1].getValue()) {
            return activityStates[activityStates.length - 1];
        }
        return null;
    }

    public Integer getValue() {
        return value;
    }
}
